package tt.dz.service;

import java.util.List;

import tt.dz.entity.UserMember;

/**
 * 会员操作接口
 * @author xielf
 *
 */
public interface UserMemberService {

	/**
	 * 查询用户列表
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<UserMember> getUserInfoList(Integer pageNo,Integer pageSize);
	
	/**
	 * 通过多个userid查询会员列表
	 * @param userid 用户ID
	 * @return 
	 */
	public List<UserMember> getUserInfoByUserId(String userid);
	
	/**
	 * 通过单个userid查询会员信息
	 * @param userid 用户ID
	 * @return 
	 */
	public UserMember getUserInfoByUserId(Integer userid);
	
	/**
	 * 通过单个userid查询会员信息
	 * @param userid 用户ID
	 * @return 
	 */
	public UserMember getUserInfoByPayCard(String cardNum);
	
	/**
	 * 用户注册
	 * @param userMember 会员对象
	 * @return 操作结果字符串
	 */
	public String register(UserMember userMember,String areaNum);
	
	/**
	 * 通过用户名查询用户信息
	 * @param userName
	 * @return 会员信息
	 */
	public UserMember login(String userName,String password,Integer areaNum);
	
	/**
	 * 更新用户位置信息
	 * @param userMember
	 * @return 操作结果字符串
	 */
	public String updateUserLocation(Integer userId,Double lat,Double lng);
	
	/**
	 * 更改用户信息
	 * @param userMember 用户对象
	 * @return 操作结果字符串
	 */
	public void updateUserInfo(UserMember userMember);
	
	/**
	 * 通过用户ID物理删除用户关联相关数据
	 * @param userId
	 */
	public void physicallyDeleteUserRelationById(Integer userId);
	
	/**
	 * 修改密码
	 * @param userId 用户数据
	 * @param oldPassword  旧密码
	 * @param newPassword	新密码
	 */
	public String updatePassword(Integer userId,String oldPassword,String newPassword);
	
	/**
	 * 得到附近用户
	 * @param lat	纬度
	 * @param lng	经度
	 * @return
	 */
	public List<UserMember> getNearUserInfo(Double lat,Double lng,Integer pageNo,Integer pageSize);
	
	/**
	 * 获取用户距离
	 * @param lat 纬度
	 * @param lng 经度
	 * @param userId 用户ID
	 * @return
	 */
	public Double getDistanceByUserIdAndLatLng(Double lat,Double lng,Integer userId);
	
	
	/**
	 * 判断用户是否存在业务接口
	 * @param phone
	 * @return
	 */
	public boolean judgeUserExistsByPhone(String phone);
	
	/**
	 * 通过im用户名查询用户信息
	 * @param imUserName im用户名
	 * @return
	 */
	public List<UserMember> getUserMemberByImUserName(String imUserName);
	
	/**
	 * 修改密码通过手机号码
	 * @param phone	手机号码
	 * @param password	密码
	 * @return
	 */
	public boolean updatePasswordByPhone(String phone,String password);

	/**
	 * 通过手机号码模糊匹配用户列表
	 * @param phone
	 * @return
	 */
	public List<UserMember> getUserInfoFuzzyByPhone(String phone,int pageNo,int pageSize);
	
	/**
	 * 通过手机号码查询用户详细信息
	 * @param phone
	 * @return
	 */
	public UserMember getUserInfoByPhone(String phone);
	
}
